// 分类展开收起的分类的逻辑
/*$(function () {

})*/

var cateIds = [];
function getCateId(cateId) {
    $("tbody tr[fid=" + cateId + "]").each(function (index, el) {
        id = $(el).attr('cate-id');
        cateIds.push(id);
        getCateId(id);
    });
}

layui.use(['form', 'laypage','laydate'], function () {
    var form = layui.form;
    var laypage = layui.laypage;
    var laydate = layui.laydate;
    $.ajax({
        type: 'get',
        url: "http://api.hk.com/productMenu/findAll",
        // data: {'page': 1, 'limit': 10},
        success: function (data) {
            // console.log(data);
            //渲染
            resultData(data);
            // 总数量
            $("#count").html(data.total);
            /**
             * 类型多级显示效果
             */
            TypeStatus(0);
            return false;
        },
        error: function () {
            layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
            return false;
        }

    });

    /**
     * 模糊查询
     */
    form.on('submit(search)',function (data) {
        // console.log(data.field);
        //发送异步请求获取对应数据
        flashData(data);
        return false;
    })

    /**
     * 创建日期实例
     */
    laydate.render({
        elem: "#start",
        trigger: 'click' //采取事件弹出
    })

});

/**
 * 模糊查询
 * @param data
 */
function  flashData(data) {
    var field = data.field;
    // 用于判断是否隐藏子节点
    let gmtCreate = field.gmtCreate==''?true:false;
    let name = field.name==''?true:false;
    console.log(gmtCreate+"\n"+name);
    layui.use(['form', 'laypage','laydate'], function () {
        var form = layui.form;
        var laypage = layui.laypage;
        var laydate = layui.laydate;
        $.ajax({
            type: 'get',
            url: "http://api.hk.com/productMenu/findAll",
            data: field,
            success: function (res) {
                // console.log(res);
                //渲染
                resultData(res);
                // 总数量
                $("#count").html(res.total);
                /**
                 * 类型多级显示效果
                 */
                if (gmtCreate && name) {
                    TypeStatus(0);
                    return false;
                }
                TypeStatus(1);
                return false;
            },
            error: function () {
                layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
                return false;
            }
        });
    });
}

/**
 * 类型多级显示效果
 * 0: 默认显示
 * 1: 模糊查询显示
 * @constructor
 */
function TypeStatus(id) {
    // 分类展开收起的分类的逻辑
    if (id == 0) {
        $("tbody.x-cate tr[fid!='0']").hide();
    }
    // 类型多级显示效果
    $('.x-show').click(function () {
        if($(this).attr('status')=='true'){
            $(this).html('&#xe625;');
            $(this).attr('status','false');
            cateId = $(this).parents('tr').attr('cate-id');
            $("tbody tr[fid="+cateId+"]").show();
        }else{
            cateIds = [];
            $(this).html('&#xe623;');
            $(this).attr('status','true');
            cateId = $(this).parents('tr').attr('cate-id');
            getCateId(cateId);
            for (var i in cateIds) {
                $("tbody tr[cate-id="+cateIds[i]+"]").hide().find('.x-show').html('&#xe623;').attr('status','true');
            }
        }
    });
    var cateIds = [];
    function getCateId(cateId) {
        $("tbody tr[fid="+cateId+"]").each(function(index, el) {
            id = $(el).attr('cate-id');
            cateIds.push(id);
            getCateId(id);
        });
    }

}

/**
 * 分页异步渲染
 * 暂时不适用，会出现隐藏子节点显示不全现象
 * @param page
 * @param limit
 * @returns {boolean}
 */
function pageNewsType(page, limit) {
    $("#productMenu").html(""); //清空所有标签元素
    layui.use(['layer','laypage'],function () {
        var laypage = layui.laypage;
        var layer = layui.layer;
        $.ajax({
            type: 'get',
            url: "http://api.hk.com/productMenu/findAll",
            data: {'page': page, 'limit': limit},
            success: function (data) {
                // console.log(data);
                // 数据渲染
                resultData(data)
                /**
                 * 类型多级显示效果
                 */
                TypeStatus();
                return false;
            },
            error: function () {
                layer.msg('请求接口异常！', {icon: 0, time: 1200});
                return false;
            }
        });
        return false;
    })
}

/**
 * 编辑
 * @param id
 */
function openEdit(id) {
    // layui.layer.msg('编辑类型：'+id);
    sessionStorage.setItem("id",id);
    xadmin.open('编辑','menu-edit.html',600,260)
}

/**
 * 添加子类型
 * parentId 实际上是当前类型的Id，当做子类型的父级进行传递
 * @param parentId
 */
function openSaveSonType(parentId) {
    // layui.layer.msg('添加子类型：'+id);
    sessionStorage.setItem("parentId",parentId);
    xadmin.open('添加子类型','menu-add.html',600,260)
}

/**
 * JSON返回值渲染
 * @param data
 */
function resultData(data) {
    $("#productMenu").html(""); //清空所有标签元素
    if (data.total > 0) {
        $(data.list).each(function (index, item) {
            // console.log("==="+item.productMenus);
            // 匹配根节点是否具有子节点
            if (item.productMenus != null && item.productMenus.length > 0) {
                shouAll(data, item);
            } else {
                // 遍历根节点
                let productMenu = "<tr id='" + item.id + "' cate-id=" + item.id + " fid=" + item.parentId + " >\n" +
                    "                            <td>" + item.id + "</td>\n"+
                    "                            <td>\n" +
                    "                                " + item.name + " \n" +
                    "                            </td>\n"+
                    "                            <td><input type=\"number\" class=\"layui-input x-sort\" min='0' step='0' name=\"order\" id='" + item.id+1 + "' onblur='updateParent("+item.id+")' value=" + item.parentId + "></td>\n" +
                    "                            <td>\n" +
                    "                                <span>" + item.gmtCreate + "</span>\n" +
                    "                            </td>\n" +
                    "                            <td>\n" +
                    "                                <span>" + item.gmtModified + "</span>\n" +
                    "                            </td>\n" +
                    "                            <td class=\"td-manage\">\n" +
                    "                                <button class=\"layui-btn layui-btn layui-btn-xs\"  onclick=\"openEdit(" + item.id + ")\" ><i class=\"layui-icon\">&#xe642;</i>编辑</button>\n" +
                    "                                <button class=\"layui-btn layui-btn-warm layui-btn-xs\"  onclick=\"openSaveSonType(" + item.id + ")\" ><i class=\"layui-icon\">&#xe642;</i>添加子类型</button>\n" +
                    "                                <button class=\"layui-btn-danger layui-btn layui-btn-xs\"  onclick=\"member_del(" + item.id + ")\" href=\"javascript:;\" ><i class=\"layui-icon\">&#xe640;</i>删除</button>\n" +
                    "                            </td>\n" +
                    "                        </tr>";
                $("#productMenu").append(productMenu);
            }
        });
        return false;
    }
    layui.layer.msg('暂无产品菜单！',{icon:0,time:1200});
    return false;

}

/**
 * 递归遍历多级菜单
 * data 传递的所有数据
 * item 遍历单独数据
 */
function shouAll(data,item) {
    /**
     * 判断是否具有子节点，有，就在父节点上加前缀事件点击图标
     */
    if (item.productMenus != null && item.productMenus.length > 0) {
        // 父节点加前缀
        let productMenu = "<tr id='" + item.id + "' cate-id=" + item.id + " fid=" + item.parentId + " >\n" +
            "                            <td>" + item.id + "</td>\n" +
            "                            <td>\n" +
            "                                <i class=\"layui-icon x-show\" status='true'>&#xe623;</i>" + item.name + " \n" +
            "                            </td>\n" +
            "                            <td><input type=\"number\" class=\"layui-input x-sort\" min='0' step='0' name=\"order\" id='" + item.id+1 + "' onblur='updateParent("+item.id+")' value=" + item.parentId + "></td>\n" +
            "                            <td>\n" +
            "                                <span>" + item.gmtCreate + "</span>\n" +
            "                            </td>\n" +
            "                            <td>\n" +
            "                                <span>" + item.gmtModified + "</span>\n" +
            "                            </td>\n" +
            "                            <td class=\"td-manage\">\n" +
            "                                <button class=\"layui-btn layui-btn layui-btn-xs\"  onclick=\"openEdit(" + item.id + ")\" ><i class=\"layui-icon\">&#xe642;</i>编辑</button>\n" +
            "                                <button class=\"layui-btn layui-btn-warm layui-btn-xs\"  onclick=\"openSaveSonType(" + item.id + ")\" ><i class=\"layui-icon\">&#xe642;</i>添加子类型</button>\n" +
            "                                <button class=\"layui-btn-danger layui-btn layui-btn-xs\"  onclick=\"member_del(" + item.id + ")\" href=\"javascript:;\" ><i class=\"layui-icon\">&#xe640;</i>删除</button>\n" +
            "                            </td>\n" +
            "                        </tr>";
        $("#productMenu").append(productMenu);
        // 遍历子节点
        $(item.productMenus).each(function (index, item) {
            shouAll(data, item);
        });
    } else {
        let productMenu = "<tr id='" + item.id + "' cate-id=" + item.id + " fid=" + item.parentId + " >\n" +
            "                            <td>" + item.id + "</td>\n" +
            "                            <td>\n" +
            "                                " + item.name + " \n" +
            "                            </td>\n" +
            "                            <td><input type=\"number\" class=\"layui-input x-sort\" min='0' step='0' name=\"order\" id='" + item.id+1 + "' onblur='updateParent("+item.id+")' value=" + item.parentId + "></td>\n" +
            "                            <td>\n" +
            "                                <span>" + item.gmtCreate + "</span>\n" +
            "                            </td>\n" +
            "                            <td>\n" +
            "                                <span>" + item.gmtModified + "</span>\n" +
            "                            </td>\n" +
            "                            <td class=\"td-manage\">\n" +
            "                                <button class=\"layui-btn layui-btn layui-btn-xs\"  onclick=\"openEdit(" + item.id + ")\" ><i class=\"layui-icon\">&#xe642;</i>编辑</button>\n" +
            "                                <button class=\"layui-btn layui-btn-warm layui-btn-xs\"  onclick=\"openSaveSonType(" + item.id + ")\" ><i class=\"layui-icon\">&#xe642;</i>添加子类型</button>\n" +
            "                                <button class=\"layui-btn-danger layui-btn layui-btn-xs\"  onclick=\"member_del(" + item.id + ")\" href=\"javascript:;\" ><i class=\"layui-icon\">&#xe640;</i>删除</button>\n" +
            "                            </td>\n" +
            "                        </tr>";
        $("#productMenu").append(productMenu);
    }

}

/**
 * 产品菜单节点序号更改
 * @param id
 */
function updateParent(id) {
    layer.confirm('确认要修改归属节点吗？',{title:'提示：将更改该节点位置'},function (index) {
        let parentId = $("#"+id+1).val();
        let parentId1 = parseInt(parentId);
        // console.log('获取的ParentId值为'+toString.call(parentId1));
        // console.log('获取的Id值为'+toString.call(id));
        let ze = /\D/;
        //匹配是否为数字
        if (ze.test(parentId)) {
            layui.layer.msg('序号必须为数字！',{icon:0,time:1200});
            return false;
        }
        // 判断序号是否为本身ID
        if (parentId == id) {
            layui.layer.msg('序号不能为自身Id',{icon:0,time:1200});
            return false;
        }
        console.log('获取的ParentId值为'+parentId);
        //发异步更改
        $.ajax({
            type: 'post',
            url: 'http://api.hk.com/productMenu/updateParentId',
            data: JSON.stringify({'id':id,'parentId':parentId1}),
            contentType: 'application/json;charset=utf-8',
            dataType: 'json',
            success: function (data) {
                if (data.message == "success") {
                    layer.msg('节点已修改!', {icon: 1, time: 1000,end: function () {
                            // 可以对父窗口进行刷新
                            xadmin.father_reload();
                        }});
                    return false;
                }
                layer.msg('节点不存在，未修改!', {icon: 2, time: 1000,end: function () {
                        // 可以对父窗口进行刷新
                        xadmin.father_reload();
                    }});
                return false;
            },
            error: function () {
                layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
                return false;
            }
        })
        return false;
    });
}

/*产品类型-删除*/
function member_del(id) {
    layer.confirm('确认要删除吗？',{title:'提示：将所属子节点一并删除'},function (index) {
        //发异步删除数据
        $.ajax({
            type: 'post',
            url: "http://api.hk.com/productMenu/deletetProductMenu/"+id,
            success: function (data) {
                if (data.message == "success") {
                    $("#"+id+"").css('display','none');
                    layer.msg('已删除!', {icon: 1, time: 1000});
                    return false;
                }
                layer.msg('未删除!', {icon: 2, time: 1000});
                return false;
            },
            error: function () {
                layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
                return false;
            }
        })
        return false;
    });
}
